package com.dream.wukong.configcenter.client.core;

import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;

/**
* 描  述:  实际内存存储配置信息类
* 创建时间: 2018/5/22
*/
public class RealProperty implements IProperty {

    private static Logger logger = Logger.getLogger(RealProperty.class);

    private JSONObject configValue;

    public RealProperty(JSONObject configValue) {
        this.configValue = configValue;
    }

    public JSONObject getConfigValue() {
        return configValue;
    }

    /***
    * 描  述:  更新配置
    * 参  数:configValue
    * 返回值: void
    * 创建时间: 2018/5/22
    */
    public void setConfigValue(JSONObject configValue) {
        if(null != configValue){
            JSONObject newConfigValue = new JSONObject();
            JSONObject oldConfigValue = this.configValue;
            oldConfigValue.keySet().forEach( key -> {
                newConfigValue.put(key, oldConfigValue.get(key));
            });
            /////将参数的配置信息覆盖老的（如果存在），否则新增
            configValue.keySet().forEach(key -> {
                newConfigValue.put(key, configValue.get(key));
            });
            this.configValue = newConfigValue;
        }
    }


    /**
    * 描  述:   根据key得到对应配置的value
    * 参  数:key
    * 返回值: java.lang.String
    * 创建时间: 2018/5/22
    */
    @Override
    public String getProperty(String key) {
        String value = null ;
        if(StringUtils.isNotBlank(key)){
            try{
                value = this.configValue.getString(key);
            }catch (Exception e){
                logger.error("获取Property异常：" + e.getLocalizedMessage(), e);
                value = null;
            }
        }
        return value;
    }
}
